home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Aminet / comm / news / slrn-bin.lha / slrn / doc / tm / slrnfuns / whatelse.sl < prev   
Text File  |  1999-04-27  |  2KB  |  117 lines

  1. #! /usr/bin/env slsh
  2. % -*- slang -*-
  3.  
  4. % This file is used to determine what functions still need documenting.
  5. % I think that it provides a good example of the use of associative arrays.
  6.  
  7. _debug_info = 1;
  8.  
  9. variable Src_Files = "../../../src/*.c";
  10. variable TM_Files = "*.tm";
  11. variable Unwanted_Files = "";
  12.  
  13. define grep (pat, files)
  14. {
  15.    if (strlen (files) == 0)
  16.      return String_Type[0];
  17.  
  18.    variable fp = popen (sprintf ("rgrep '%s' %s", pat, files), "r");
  19.    variable matches;
  20.    
  21.    matches = fgetslines (fp);
  22.    () = pclose (fp);
  23.    
  24.    return matches;
  25. }
  26.  
  27.    
  28. static define prune_array (a, b)
  29. {
  30.    foreach (b) using ("keys")
  31.      {
  32.     variable k = ();
  33.     assoc_delete_key (a, k);
  34.      }
  35. }
  36.  
  37. define get_with_pattern (a, pat, white)
  38. {
  39.    variable f;
  40.  
  41.    foreach (grep (pat, Src_Files))
  42.      {
  43.     f = ();
  44.     
  45.     f = strtok (f, white)[1];
  46.     a [f] = 1;
  47.      }
  48.  
  49.    if (Unwanted_Files != NULL) foreach (grep (pat, Unwanted_Files))
  50.      {
  51.     f = ();
  52.     f = strtok (f, white)[1];
  53.     assoc_delete_key (a, f);
  54.      }
  55. }
  56.  
  57. define get_src_intrinsics ()
  58. {
  59.    variable f;
  60.    variable src = Assoc_Type[Int_Type];
  61.  
  62.    get_with_pattern (src, "^[ \t]+MAKE_INTRINSIC.*(\".*\"", "\"");
  63.    get_with_pattern (src, "^[ \t]+MAKE_MATH_UNARY.*(\".*\"", "\"");
  64.    get_with_pattern (src, "^[ \t]+MAKE_VARIABLE.*(\".*\"", "\"");
  65.    get_with_pattern (src, "^[ \t]+MAKE_DCONSTANT.*(\".*\"", "\"");
  66.    get_with_pattern (src, "^[ \t]+MAKE_ICONSTANT.*(\".*\"", "\"");
  67.  
  68.    return src;
  69. }
  70.  
  71. define get_doc_intrinsics ()
  72. {
  73.    variable funs;
  74.    variable doc = Assoc_Type[Int_Type];
  75.  
  76.    funs = grep ("^\\\\function{", TM_Files);
  77.    foreach (funs)
  78.      {
  79.     variable f;
  80.     f = ();
  81.     f = strtok (f, "{}")[1];
  82.     doc [f] = 1;
  83.      }
  84.    funs = grep ("^\\\\variable{", TM_Files);
  85.    foreach (funs)
  86.      {
  87.     f = ();
  88.     f = strtok (f, "{}")[1];
  89.     doc [f] = 1;
  90.      }
  91.    return doc;
  92. }
  93.  
  94.  
  95. define main ()
  96. {
  97.    variable k;
  98.    variable src, doc;
  99.  
  100.    doc = get_doc_intrinsics ();
  101.    src = get_src_intrinsics ();
  102.  
  103.    prune_array (src, doc);
  104.    
  105.    k = assoc_get_keys (src);
  106.    k = k[array_sort(k, &strcmp)];
  107.    
  108.    foreach (k)
  109.      {
  110.     message ();
  111.      }
  112. }
  113.  
  114. main ();
  115.    
  116.    
  117.